IMAGE_IMPORT_DESCRIPTOR:

1er DWORD Original First Thunk 60 71 00 00
2nd DWORD Date Time Stamp 64 AB 2F 32
3e DWORD Forwarder Chain FF FF FF FF
4e DWORD Name E8 74 00 00
5e DWORD First Thunk 70 73 00 00
-->
00 00 71 60
............
............
00 00 74 E8
00 00 73 70
-->
00 00 45 60
..........
..........
00 00 48 E8
00 00 47 70




Reprenons... On va commencer par le 4e DWORD ce sera plus simple.

Le 4e DWORD d'une structure IMAGE_IMPORT_DESCRIPTOR pointe sur l'adresse du nom de la DLL.

4e DWORD Name E8 74 00 00
-->
00 00 74 E8
-->
00 00 48 E8

et en 000048E8 on trouve bien :

000048E0 7865 6375 7465 4100 5348 454C 4C33 322E xecuteA.SHELL32.
000048F0 646C 6C00 7100 4578 6974 5072 6F63 6573 dll.q.ExitProces



Le 1er DWORD pointe sur une structure "ORIGINAL_FIRST_THUNK":

"ORIGINAL_FIRST_THUNK" est constituée elle-même de plusieurs DWORD qui repésentent des RVA pointant sur une structure IMAGE_IMPORT_BY_NAME. Cette dernière structure est l'endroit où est écrit le n°Ordinal + le nom d'une fonction appartenant à cette DLL.

00004400 6071 0000 64AB 2F32 FFFF FFFF E874 0000 .'q..d./2.....t.. 1er IMA_IMP_DESCR (SHELL32.dll)
00004410 7073 0000 D070 0000 A01C 0C32 FFFF FFFF ps...p.....2....2nd IMA_IMP_DESCR (KERNEL32.dll)
00004420 E076 0000 E072 0000 7871 0000 63E4 FD2F .v...r..xq..c../ 3e IMA_IMP_DESCR (USER32.dll)
00004430 FFFF FFFF D67A 0000 8873 0000 7870 0000 .....z...s..xp..4e IMA_IMP_DESCR (GDI.32.dll)
00004440 BC83 F32F FFFF FFFF 167C 0000 8872 0000 .../.....|...r..
00004450 6C72 0000 64AB 2F32 FFFF FFFF 8C7C 0000 lr..d./2.....|.. 5e IMA_IMP_DESCR (Comdlg.dll)
00004460 7C74 0000 0000 0000 0000 0000 0000 0000 |t..............
00004470 0000 0000 0000 0000 0A7C 0000 F87B 0000 .........|...{..ORIGINAL_FIRST_THUNK de GDI32.dll
00004480 1C7B 0000 F27A 0000 047B 0000 107B 0000 .{...z...{...{..
00004490 E27A 0000 407B 0000 4C7B 0000 367B 0000 .z..@|..L{..6{..
000044A0 687B 0000 7E7B 0000 587B 0000 9C7B 0000 h{..~{..X{...{..
000044B0 AE7B 0000 8E7B 0000 C87B 0000 D27B 0000 .{...{...{...{..
000044C0 BA7B 0000 2C7B 0000 E47B 0000 0000 0000 .{..,{...{......
000044D0 F675 0000 EA75 0000 DA75 0000 0476 0000 .u...u...u...v.. ORIGINAL_FIRST_THUNK de KERNEL32.dll
000044E0 1E76 0000 2876 0000 3676 0000 1076 0000 .v..(v..6v...v..
000044F0 AE75 0000 CE75 0000 5E76 0000 6876 0000 .u...u..^v..hv..
00004500 7476 0000 8476 0000 9276 0000 A076 0000 tv...v...v...v..
00004510 B076 0000 C276 0000 D476 0000 BA75 0000 .v...v...v...u..
00004520 8475 0000 9C75 0000 9075 0000 5A75 0000 .u...u...u..Zu..
00004530 7475 0000 6675 0000 2875 0000 4875 0000 tu..fu..(u..Hu..
00004540 3A75 0000 F474 0000 1675 0000 0275 0000 :u...t...u...u..
00004550 4076 0000 4A76 0000 5476 0000 0000 0000 @v..Jv..Tv......
00004560
D874       0000
B474 0000 A674 0000 C674 0000 .t...t...t...t.. O ORIGINAL_FIRST_THUNK de SHELL32.dll
00004570 9874 0000 0000 0000 6678 0000 5278 0000 .t......fx..Rx.. ORIGINAL_FIRST_THUNK de USER32.dll
00004580 327A 0000 8678 0000 9278 0000 A278 0000 2z...x...x...x..
00004590 B478 0000 D278 0000 E278 0000 F078 0000 .x...x...x...x..
000045A0 FA78 0000 0879 0000 1C79 0000 2C79 0000 .x...y...y..,y..
000045B0 4679 0000 5879 0000 6A79 0000 7879 0000 Fy..Xy..jy..xy..
000045C0 8C79 0000 A079 0000 AC79 0000 BC79 0000 .y...y...y...y..
000045D0 C879 0000 D879 0000 E879 0000 FA79 0000 .y...y...y...y..
000045E0 0C7A 0000 227A 0000 3A78 0000 447A 0000 .z.."z..:x..Dz..
000045F0 507A 0000 587A 0000 6E7A 0000 7E7A 0000 Pz..Xz..nZ..~z..
00004600 967A 0000 A87A 0000 B87A 0000 CA7A 0000 .z...z...z...z..
00004610 0078 0000 F477 0000 E477 0000 D677 0000 .x...w...w...w..
00004620 C877 0000 B677 0000 A477 0000 8E77 0000 .w...w...w...w..
00004630 8077 0000 7477 0000 5E77 0000 5277 0000 .w..tw..^w..Rw..
00004640 4677 0000 3677 0000 2A77 0000 1A77 0000 Fw..6w..*w...w..
00004650 0E77 0000 FC76 0000 EE76 0000 1278 0000 .w...v...v...x..
00004660 2678 0000 7478 0000 0000 0000 387C 0000 &x..tx......8|.. ORIGINAL_FIRST_THUNK de Comdlg.dll
00004670 4C7C 0000 5C7C 0000 6876 0000 7C7C 0000 L|..\|..h|..||..
00004680 207C 0000 0000 0000 F02C F3BF A724 F3BF |.......,...$.. FIRST_THUNK de GDI32.dll
00004690 5A21 F3BF 1745 F3BF 9724 F3BF AB24 F3BF Z!...E...$...$..
000046A0 9F24 F3BF 5724 F3BF 6310 F3BF B324 F3BF .$..W$..c....$..
000046B0 361B F3BF 4F13 F3BF 5110 F3BF E110 F3BF 6...O...Q.......
000046C0 E724 F3BF 7E22 F3BF 8218 F3BF 1D1C F3BF .$..~"..........
000046D0 FB24 F3BF AF24 F3BF 111C F3BF 0000 0000 .$...$..........
000046E0 0449 F7BF 2CCE F9BF 136E F7BF 9573 F7BF .I..,....n...s.. FIRST_THUNK de KERNEL32.dll
000046F0 8382 F9BF A2DF F9BF E8CD F9BF FFCF F9BF ................
00004700 7072 F7BF 1E73 F7BF 9482 F9BF 204A F7BF pr...s...... J..
00004710 CF6D F7BF 8B6D F7BF 0449 F7BF 7D71 F7BF .m...m...I..}q..
00004720 DC7B F7BF 607E F7BF AA72 F7BF 7776 F7BF .{..'~...r..wv..
00004730 5B73 F7BF 187A F7BF 7364 F7BF E472 F7BF [s...z..sd...r..
00004740 4129 F8BF 9C79 F7BF 659F F8BF 33FB F7BF A)...y..e...3...
00004750 F16D F7BF CDAE F8BF 5476 F7BF BD75 F7BF .m......Tv...u..
00004760 BECD F9BF FB73 F7BF 2574 F7BF 0000 0000 .....s..%t......
00004770
0E8F       DD7F
222B DC7F DD71 DD7F 2012 DC7F ...."+...q.. ... FIRST_THUNK de SHEL32.dll
00004780 3CB0 E07F 0000 0000 BD4C F6BF 7C4D F6BF <........L..|M.. FIRST_THUNK de USER32.dll
00004790 1817 F6BF 6A40 F6BF 962B F6BF 482B F6BF ....j@...+..H+..
000047A0 0F48 F6BF 702C F6BF 4C1A F6BF DB22 F6BF .H..p,..L...."..
000047B0 0C4B F6BF 4D12 F6BF 5C1A F6BF FB13 F6BF .K..M...\.......
000047C0 CD4B F6BF CF51 F6BF 8F4F F6BF 112D F6BF .K...Q...O...-..
000047D0 8B48 F6BF 5A2B F6BF A923 F6BF F540 F6BF .H..Z+...#...@..
000047E0 AD45 F6BF 8D4D F6BF 3116 F6BF AC26 F6BF .E...M..1....&..
000047F0 942D F6BF 661F F6BF 224D F6BF 521F F6BF .-..f..."M..R...
00004800 5F23 F6BF A84D F6BF 5045 F6BF A34E F6BF _#...M..PE...N..
00004810 2746 F6BF B01D F6BF 5716 F6BF 114B F6BF 'F......W....K..
00004820 8123 F6BF 9746 F6BF 9123 F6BF C123 F6BF .#...F...#...#..
00004830 D938 F6BF 2B51 F6BF 9E2B F6BF 3732 F6BF .8..+Q...+..7#..
00004840 5A1F F6BF BE1A F6BF 7D23 F6BF F610 F6BF Z.......}#......
00004850 794F F6BF B64D F6BF B847 F6BF 884C F6BF yO...M...G...L..
00004860 4723 F6BF 3220 F6BF DC14 F6BF 5F3E F6BF G#..2......_>..
00004870 E94C F6BF 0815 F6BF 0000 0000 954F E87F .L...........O.. FIRST_THUNK de Comdlg.dll
00004880 A868 E87F 6857 E87F 6211 E87F A34F E87F .h..hW..b....O..
00004890 9C60 E87F 0000 0000 4C00 5368 656C 6C41 .'......L.ShellA
000048A0 626F 7574 4100 0900 4472 6167 4669 6E69 boutA...DragFini
000048B0 7368 0000 0B00 4472 6167 5175 6572 7946 sh....DragQueryF
000048C0 696C 6541 0000 0800 4472 6167 4163 6365 ileA....DragAcce
000048D0 7074 4669 6C65 7300 4E00 5368 656C 6C45 ptFiles.N.ShellE
000048E0 7865 6375 7465 4100 5348 454C 4C33 322E xecuteA.SHELL32.
000048F0 646C 6C00 7100 4578 6974 5072 6F63 6573 dll.q.ExitProces
00004900 7300 F900 4765 744D 6F64 756C 6548 616E s...GetModuleHan
00004910 646C 6541 0000 2401 4765 7453 7461 7274 dleA..$.GetStart
00004920 7570 496E 666F 4100 BC00 4765 7443 6F6D upInfoA...GetCom
00004930 6D61 6E64 4C69 6E65 4100 5601 476C 6F62 mandLineA.V.Glob
00004940 616C 4672 6565 0000 F100 4765 744C 6F63 alFree....GetLoc
00004950 616C 6549 6E66 6F41 0000 9F02 6C73 7472 aleInfoA....lstr
00004960 6370 7941 0000 3900 4372 6561 7465 4669 cpyA..9.CreateFil
00004970 6C65 4100 EF00 4765 744C 6173 7445 7272 leA...GetLastErr
00004980 6F72 0000 9602 6C73 7472 6361 7441 0000 or....lstrcatA..
00004990 9100 4669 6E64 436C 6F73 6500 9500 4669 ..FindClose...Fi
000049A0 6E64 4669 7273 7446 696C 6541 0000 9902 ndFirstFileA
000049B0 6C73 7472 636D 7041 0000 1D01 4765 7450 lstrcmpA....GetP
000049C0 726F 6669 6C65 5374 7269 6E67 4100 A202 rofileStringA...
000049D0 6C73 7472 6370 796E 4100 9601 4C6F 6361 lstrcpynA...Loca
000049E0 6C52 6541 6C6C 6F63 0000 9501 4C6F 6361 lReAlloc....Loca
000049F0 6C4C 6F63 6B00 8F01 4C6F 6361 6C41 6C6C lLock...LocalAll
00004A00 6F63 0000 A502 6C73 7472 6C65 6E41 0000 oc....lstrlenA..
00004A10 9901 4C6F 6361 6C55 6E6C 6F63 6B00 8E02 ..LocalUnlock...
00004A20 5F6C 636C 6F73 6500 5500 4465 6C65 7465 _lclose.U.Delete
00004A30 4669 6C65 4100 9302 5F6C 7772 6974 6400 FileA..._lwrite.
00004A40 8F02 5F6C 6372 6561 7400 9102 5F6C 6F70 .._lcreat..._lop
00004A50 656E 0000 9202 5F6C 7265 6164 0000 9002 en...._lread....
00004A60 5F6C 6C73 6565 6B00 9301 4C6F 6361 6C46 _llseek...LocalF
00004A70 7265 6500 6001 476C 6F62 616C 556E 6C6F ree.'.GlobalUnlo
00004A80 636B 0000 5A01 476C 6F62 616C 4C6F 636B ck..Z.GlobalLock
00004A90 0000 4F01 476C 6F62 616C 416C 6C6F 6300 ..O.GlobalAlloc.
00004AA0 F000 4765 744C 6F63 616C 5469 6D65 0000 ..GetLocalTime..
00004AB0 4101 4765 7454 696D 6546 6F72 6D61 7441 A.GetTimeFormatA
00004AC0 0000 D100 4765 7444 6174 6546 6F72 6D61 ....GetDateForma
00004AD0 7441 0000 9C02 6C73 7472 636D 7069 4100 tA....lstrcmpiA.
00004AE0 4B45 524E 454C 3332 2E64 6C6C 0000 7F01 KERNEL32.dll....
00004AF0 4D6F 7665 5769 6E64 6F77 0000 3B01 496E MoveWindow..;.In
00004B00 7661 6C69 6461 7465 5265 6374 0000 C901 validateRect....
00004B10 5365 7446 6F63 7573 0000 8E01 506F 7374 SetFocus....Post
00004B20 4D65 7373 6167 6541 0000 E200 4765 7446 MessageA....GetF
00004B30 6F63 7573 0000 AF01 5365 6E64 4D65 7373 ocus....SendMess
00004B40 6167 6541 0000 5E01 4C6F 6164 4963 6F6E ageA..^.LoadIcon
00004B50 4100 2502 5769 6E48 656C 7041 0000 CA01 A.%.WinHelpA....
00004B60 5365 7446 6F72 6567 726F 756F 6457 696E SetForegroundWin
00004B70 646F 7700 A900 456E 6444 6961 6C6F 6700 dow...EndDialog.
00004B80 F901 5368 6F77 5769 6E64 6F77 0000 F200 ..ShowWindow....
00004B90 4765 744C 6173 7441 6374 6976 6550 6F70 GetLastActivePop
00004BA0 7570 0000 A500 456E 6162 6C65 4D65 6E75 up....EnableMenu
00004BB0 4974 656D 0000 7800 4465 6657 696E 646F Item..x.DefWindo
00004BC0 7750 726F 6341 0000 7601 4D65 7373 6167 wProcA..v.Messag
00004BD0 6542 6F78 4100 7501 4D65 7373 6167 6542 eBoxA.u.MessageB
00004BE0 6565 7000 8100 4465 7374 726F 7957 696E eep...DestroyWin
00004BF0 646F 7700 4D01 4973 4963 6F6E 6963 0000 dow.M.IsIconic..
00004C00 9001 506F 7374 5175 6974 4D65 7373 6167 ..PostQuitMessag
00004C10 6500 8600 4469 7370 6174 6368 4D65 7373 e...DispatchMess
00004C20 6167 6541 0000 0F02 5472 616E 736C 6174 ageA....Translat
00004C30 654D 6573 7361 6765 0000 0C02 5472 616E eMessage....Tran
00004C40 736C 6174 6541 6363 656C 6572 6174 6F72 slateAccelerator
00004C50 4100 4901 4973 4469 616C 6F67 4D65 7373 A.I.IsDialogMess
00004C60 6167 6541 0000 FF00 4765 744D 6573 7361 ageA....GetMessa
00004C70 6765 4100 EE01 5365 7457 696E 646F 7754 geA...SetWindowT
00004C80 6578 7441 0000 1E00 4368 6172 4E65 7874 extA....CharNext
00004C90 4100 2F00 4368 6563 6B4D 656E 7549 7465 A./.CheckMenuIte
00004CA0 6D00 3700 436C 6F73 6543 6C69 7062 6F61 m.7.CloseClipboa
00004CB0 7264 0000 4701 4973 436C 6970 626F 6172 rd..G.IsClipboar
00004CC0 6446 6F72 6D61 7441 7661 696C 6162 6C65 dFormatAvailable
00004CD0 0000 8701 4F70 656E 436C 6970 626F 6172 ....OpenClipboar
00004CE0 6400 1201 4765 7453 7562 4D65 6E75 0000 d...GetSubMenu..
00004CF0 F300 4765 744D 656E 7500 6801 4C6F 6164 ..GetMenu.h.Load
00004D00 5374 7269 6E67 4100 5601 4C6F 6164 4163 StringA.V.LoadAc
00004D10 6365 6C65 7261 746F 7273 4100 1501 4765 celeratorsA...Ge
00004D20 7453 7973 7465 6D4D 656E 7500 A001 5265 tSystemMenu...Re
00004D30 6769 7374 6572 5769 6E64 6F77 4D65 7373 gisterWindowMess
00004D40 6167 6541 0000 E901 5365 7457 696E 646F ageA....SetWindo
00004D50 774C 6F6E 6741 0000 5000 4372 6561 7465 wLongA..P.Create
00004D60 5769 6E64 6F77 4578 4100 5A01 4C6F 6164 WindowExA.Z.Load
00004D70 4375 7273 6F72 4100 9601 5265 6769 7374 CursorA...Regist
00004D80 6572 436C 6173 7345 7841 0000 1601 4765 erClassExA....Ge
00004D90 7453 7973 7465 6D4D 6574 7269 6373 0000 tSystemMetrics..
00004DA0 C001 5365 7443 7572 736F 7200 1902 5570 ..SetCursor...Up
00004DB0 6461 7465 5769 6E64 6F77 0000 2200 4368 dateWindow..".Ch
00004DC0 6172 5072 6576 4100 CF00 4765 7443 6C69 arPrevA...GetCli
00004DD0 656E 7452 6563 7400 8B01 5065 656B 4D65 entRect...PeekMe
00004DE0 7373 6167 6541 0000 C601 5365 7444 6C67 ssageA....SetDlg
00004DF0 4974 656D 5465 7874 4100 0202 5461 6262 ItemTextA...Tabb
00004E00 6564 5465 7874 4F75 7441 0000 4600 4372 edTextOutA..F.Cr
00004E10 6561 7465 4469 616C 6F67 5061 7261 6D41 eateDialogParamA
00004E20 0000 A700 456E 6162 6C65 5769 6E64 6F77 ....EnableWindow
00004E30 0000 2601 4765 7457 696E 646F 7754 6578 ..&.GetWindowTex
00004E40 7441 0000 A301 5265 6C65 6173 6544 4300 ta....ReleaseDC
00004E50 D800 4765 7444 4300 AD01 5365 6E64 446C ..GetDC...SendDl
00004E60 6749 7465 6D4D 6573 7361 6765 4100 DC00 dItemMessageA...
00004E70 4765 7444 6C67 4374 726C 4944 0000 3200 GetDlgCtrlID..2.
00004E80 4368 696C 6457 696E 646F 7746 726F 6D50 ChildWindowFromP
00004E90 6F69 6E74 0000 A901 5363 7265 656E 546F oint....ScreenTo
00004EA0 436C 6965 6E74 0000 D700 4765 7443 7572 Client....GetCur
00004EB0 736F 7250 6F73 0000 DF00 4765 7444 6C67 sorPos....GetDlg
00004EC0 4974 656D 5465 7874 4100 2D02 7773 7072 ItemTextA.-.wspr
00004ED0 696E 7466 4100 5553 4552 3332 2E64 6C6C intfA.USER32.dll
00004EE0 0000 4600 4465 6C65 7465 4F62 6A65 6374 ..F.DeleteObject
00004EF0 0000 BC00 4765 7453 746F 636B 4F62 6A65 ....GetStockObje
00004F00 6374 0000 4300 4465 6C65 7465 4443 0000 ct..C.DeleteDC..
00004F10 0000 4162 6F72 7444 6F63 0000 0601 5365 ..AbortDoc....Se
00004F20 6C65 6374 4F62 6A65 6374 0000 4D00 456E lectObject..M.En
00004F30 6444 6F63 0000 4E00 456E 6450 6167 6500 dDoc..N.EndPage.
00004F40 3701 5374 6172 7450 6167 6500 3501 5374 7.StartPage.5.St
00004F50 6172 7444 6F63 4100 0801 5365 7441 626F artDocA...SetAbo
00004F60 7274 5072 6F63 0000 C900 4765 7454 6578 rtProc....GetTex
00004F70 7445 7874 656E 7450 6F69 6E74 4100 8E00 tExtentPointA..
00004F80 4765 7444 6576 6963 6543 6170 7300 2B00 GetDeviceCaps.+.
00004F90 4372 6561 7465 466F 6E74 4100 CD00 4765 CreateFontA...Ge
00004FA0 7454 6578 744D 6574 7269 6373 4100 0D01 tTextMetricsA...
00004FB0 5365 7442 6B4D 6F64 6500 1C01 5365 744D SetBkMode...SetM
00004FC0 6170 4D6F 6465 0000 D700 4C50 746F 4450 apMode....LPtoDP
00004FD0 0000 3201 5365 7457 696E 646E 7745 7874 ..2.SetWindowExt
00004FE0 4578 0000 2F01 5365 7456 6965 7770 6F72 Ex../.SetViewpor
00004FF0 7445 7874 4578 0000 C200 4765 7454 6578 tExtEx....GetTex
00005000 7443 6861 7273 6574 0000 2000 4372 6561 tCharset.. .Crea
00005010 7465 4443 4100 4744 4933 322E 646C 6C00 teDCA.GDI32.dll.
00005020 0200 436F 6D6D 446C 6745 7874 656E 6465 ..CommDlgExtende
00005030 6445 7272 6F72 0000 0600 4765 7453 6176 dError....GetSav
00005040 6546 696C 654E 616D 6541 0000 0700 5061 eFileNameA....Pa
00005050 6765 5365 7475 7044 6C67 4100 0300 4669 geSetupDlgA...Fi
00005060 6E64 5465 7874 4100 0500 4765 744F 7065 ndTextA...GetOpe
00005070 6E46 696C 654E 616D 6541 0000 0400 4765 nFileNameA....Ge
00005080 7446 696C 6554 6974 6C65 4100 636F 6D64 tFileTitleA.Comd
00005090 6C67 3332 2E64 6C6C 0000 0000 0000 0000 lg32.dll........
000050A0 0000 0000 0000 0000 0000 0000 0000 0000 ................
000050B0 0000 0000 0000 0000 0000 0000 0000 0000 ................
000050C0 0000 0000 0000 0000 0000 0000 0000 0000 ................
000050D0 0000 0000 0000 0000 0000 0000 0000 0000 ................
000050E0 0000 0000 0000 0000 0000 0000 0000 0000 ................
000050F0 0000 0000 0000 0000 0000 0000 0000 0000 ................
00005100 0000 0000 0000 0000 0000 0000 0000 0000 ................
00005110 0000 0000 0000 0000 0000 0000 0000 0000 ................
00005120 0000 0000 0000 0000 0000 0000 0000 0000 ................
00005130 0000 0000 0000 0000 0000 0000 0000 0000 ................
00005140 0000 0000 0000 0000 0000 0000 0000 0000 ................
00005150 0000 0000 0000 0000 0000 0000 0000 0000 ................
00005160 0000 0000 0000 0000 0000 0000 0000 0000 ................
00005170 0000 0000 0000 0000 0000 0000 0000 0000 ................
00005180 0000 0000 0000 0000 0000 0000 0000 0000 ................
00005190 0000 0000 0000 0000 0000 0000 0000 0000 ................
000051A0 0000 0000 0000 0000 0000 0000 0000 0000 ................
000051B0 0000 0000 0000 0000 0000 0000 0000 0000 ................
000051C0 0000 0000 0000 0000 0000 0000 0000 0000 ................
000051D0 0000 0000 0000 0000 0000 0000 0000 0000 ................
000051E0 0000 0000 0000 0000 0000 0000 0000 0000 ................
000051F0 0000 0000 0000 0000 0000 0000 0000 0000 ................
00005200                  

Il y a une chose qui fait que cet IAT n'entre pas dans la norme. Enfin bien sûr que si, il suit bien une norme définit mais pas celle des petits programmes triviaux.

On a vu que les RVA qui constituent les membres de ORIGINAL_FIRST_THUNK et de FIRST_THUNK ne sont pas identiques alors que normalement ils devraient l'être.

Voici le principe de base :

Quand on exécute un programme, le Loader de Windows le mappe en mémoire. l'IAT comme tout le reste du programme est entièrement recopié et ce qui doit se passer en tant normal, c'est que pour chaque fonction, le Loader remplace les RVA FirstThunk par les vraies adresses où on peut trouver les fonctions.

Mais ici ce qui est fait, c'est que les RVA FirstThunk n'en sont plus, ce sont directement les adresses des fonctions comme on les auraient trouvés une fois le programme mappé. La raison c'est que cet exécutable a été lié grâce au petit programme Bind.exe. Lié ça veut dire que le programme Bind.exe a remplacé les FIRST THUNK par les adresses des fonctions, il a fait directement dans le fichier le travail que le Loader aurait normalement fait en mémoire. L'avantage c'est que puisqu'il a pu prévoir directement ces adresses, l'exécutable se lancera plus rapidement, c'est tout. Alors comment le Loader du système sait ou non qu'il a à faire à des RVAs ou à de vraies adresses ?
Et bien si TimeDateStamp est NULL c'est que les structures FIRST_THUNK contiennent des RVA. Sinon FIRST_THUNK sont des adresses et dans ce cas TimeDateStamp represente la date et l'heure de création de la DLL. Dans le programme lié, le membre TimeDateStamp de chaque structure IMAGE_IMPORT_DESCRIPTOR est alors comparé au TimeDateStamp unique de la DLL en question. Si ils sont semblables, c'est que les adresses contenus dans les FIRST_THUNK sont bien les adresses correctes des fonctions de cette DLL. Si les TimeDateStamp du programme et celui de la DLLs sont différents, ça signifie que la version de votre DLL n'est pas celle qui avait été utilisée au moment de linker votre programme (grâce à Bind.exe) et dans ce cas le Loader de Windows revient consulter les structures ORIGINAL_FIRST_THUNK pour retrouver des RVA et ensuite retrouver les bonnes adresses puis il écrase les anciennes adresses contenues dans les FIRST_THUNK par les bonnes qui sont d'actualité.
Le membre Forwarder de la structure IMAGE_IMPORT_DESCRIPTOR est un membre avancé qui est utilisé pour certains types particuliers de fonctions importées. Il est mis à -1 en temps normal sauf si la fonction exportée par la DLL provient en fait d'une autre DLL. Dans ce cas, la DLL sert un peu de relai entre le programme et une autre DLL qui possède en réalité cette fonction.